import { User } from '../../g-types/user';
// import { API } from '../../g-server';

/**
 * 用户列表查询参数
 */
export interface UserListParams {
  page: number;
  pageSize: number;
  keyword?: string;
}

/**
 * 用户列表响应
 */
export interface UserListResult {
  list: User[];
  total: number;
}

/**
 * 用户列表API
 */
class UserListService {
  /**
   * 获取用户列表
   * @param params 查询参数
   * @returns 用户列表和总数
   */
  async getUserList(params: UserListParams): Promise<UserListResult> {
    // 注释: 这里是接口的实际调用，目前使用模拟数据
    // return API.get('/user/list', { params });
    
    // 模拟数据
    const mockUsers: User[] = [];
    
    // 生成随机用户数据
    for (let i = 1; i <= 50; i++) {
      mockUsers.push({
        id: i,
        username: `user${i}`,
        nickname: `用户${i}`,
        email: `user${i}@example.com`,
        phone: `1380000${i.toString().padStart(4, '0')}`,
        gender: i % 3 as 0 | 1 | 2,
        department: `部门${i % 5 + 1}`,
        position: `职位${i % 4 + 1}`,
        role: i % 4 === 0 ? ['admin', 'editor'] : i % 3 === 0 ? 'editor' : 'viewer',
        status: i % 5 === 0 ? 0 : 1,
        createTime: new Date(Date.now() - i * 86400000).toISOString().split('T')[0],
        updateTime: new Date(Date.now() - i * 43200000).toISOString().split('T')[0],
      });
    }
    
    // 根据关键字过滤
    let filteredUsers = mockUsers;
    if (params.keyword) {
      const keyword = params.keyword.toLowerCase();
      filteredUsers = mockUsers.filter(
        user => 
          user.username.toLowerCase().includes(keyword) || 
          (user.nickname && user.nickname.toLowerCase().includes(keyword)) ||
          (user.email && user.email.toLowerCase().includes(keyword))
      );
    }
    
    // 计算分页
    const total = filteredUsers.length;
    const start = (params.page - 1) * params.pageSize;
    const end = start + params.pageSize;
    const list = filteredUsers.slice(start, end);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      list,
      total,
    };
  }
  
  /**
   * 创建用户
   * @param user 用户信息
   * @returns 创建结果
   */
  async createUser(user: Omit<User, 'id'>): Promise<User> {
    // 注释: 这里是接口的实际调用
    // return API.post('/user', user);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      id: Math.floor(Math.random() * 1000) + 100,
      ...user,
      createTime: new Date().toISOString().split('T')[0],
      updateTime: new Date().toISOString().split('T')[0],
    };
  }
  
  /**
   * 更新用户
   * @param user 用户信息
   * @returns 更新结果
   */
  async updateUser(user: User): Promise<User> {
    // 注释: 这里是接口的实际调用
    // return API.put(`/user/${user.id}`, user);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
    
    return {
      ...user,
      updateTime: new Date().toISOString().split('T')[0],
    };
  }
  
  /**
   * 删除用户
   * @param id 用户ID
   * @returns 删除结果
   */
  async deleteUser(_id: string | number): Promise<void> {
    // 注释: 这里是接口的实际调用
    // return API.delete(`/user/${_id}`);
    
    // 模拟网络延迟
    await new Promise(resolve => setTimeout(resolve, 500));
  }
}

export const UserListApi = new UserListService(); 